একই সমাধানে আমার দুটি প্রকল্প রয়েছে: পি 1 এবং পি 2। আমি কীভাবে পি 2-তে ক্লাস 1 ব্যবহার করতে পারি?
একই সমাধানে আমার দুটি প্রকল্প রয়েছে: পি 1 এবং পি 2। আমি কীভাবে পি 2-তে ক্লাস 1 ব্যবহার করতে পারি?
উত্তর:
পি 2 থেকে পি 1 তে কেবল রেফারেন্স যুক্ত করুন
দ্রষ্টব্য যে আপনি যেভাবে P1 এ সরাসরি অ্যাক্সেস করতে চান সেগুলির পর্যাপ্ত অ্যাক্সেসের স্তর থাকতে হবে: সাধারণত এর অর্থ এগুলি অবশ্যই সর্বজনীন করা উচিত।
পল রুয়ান সঠিক, আমি নিজেই প্রকল্পটি তৈরির চেষ্টা করেছি। আমি এটির কাজ করে কিনা তা পরীক্ষা করার জন্য কেবল একটি সম্পূর্ণ এসএলএন তৈরি করেছি।
আমি এটি ভিসি # ভিএস ২০০৮ এ তৈরি করেছি
<< (এই মন্তব্যগুলি পড়ার পাশাপাশি অন্যান্য ব্যক্তিকে সহায়তা করুন () মন্তব্যগুলি)
ধাপ 1:
ডাবলপ্রজেক্ট নামক সমাধান করুন
ধাপ ২:
ডাবলপ্রজেক্টটউ নামে সমাধানে প্রকল্প তৈরি করুন (এটি করতে সমাধান ফাইলটি নির্বাচন করতে ডান ক্লিক করুন -> যুক্ত করুন -> নতুন প্রকল্প)
আমি এখন একই সমাধান দুটি প্রকল্প আছে
ধাপ 3:
যেমনটি পল রুয়ান জানিয়েছেন। সমাধান এক্সপ্লোরারের রেফারেন্সগুলিতে যান (যদি এটি সংকলকের ভিউ ট্যাবে থাকে তবে)। ডাবলপ্রজেক্টটু হ'ল ডাবলপ্রজেক্টের একমাত্র ফাংশন / পদ্ধতিগুলির প্রয়োজন তাই ডাবলপ্রজেক্টটিতে দুটি ডান মাউস রেফারেন্স -> যুক্ত -> প্রকল্পসমূহ -> ডাবলপ্রজেক্ট।
ধাপ 4:
নাম স্থানের নির্দেশিকা অন্তর্ভুক্ত করুন:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProject; <------------------------------------------
namespace DoubleProjectTwo
{
class ClassB
{
public string textB = "I am in Class B Project Two";
ClassA classA = new ClassA();
public void read()
{
textB = classA.read();
}
}
}
ধাপ 5:
কিছু আমাকে ফলাফল প্রমাণ প্রমাণ করুন:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DoubleProject
{
public class ClassA //<---------- PUBLIC class
{
private const string textA = "I am in Class A Project One";
public string read()
{
return textA;
}
}
}
প্রধান
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProjectTwo; //<----- to use ClassB in the main
namespace DoubleProject
{
class Program
{
static void Main(string[] args)
{
ClassB foo = new ClassB();
Console.WriteLine(foo.textB);
Console.ReadLine();
}
}
}
যে কৌশলটি করা উচিত
আশাকরি এটা সাহায্য করবে
সম্পাদনা ::: ওফস পদ্ধতিটি কলটি আসলে ভুলে গিয়েছিল স্ট্রিংটি পরিবর্তন করতে, একই রকম করবেন না :)
সবসময় প্রায়শই নতুন বিকাশকারী এই সাধারণ প্রশ্নটি জিজ্ঞাসা করে যা বিশেষত ভিজ্যুয়াল স্টুডিও আইডিইর ক্ষেত্রে একটি সাধারণ সমস্যা। খুব কম লোকই নির্দিষ্ট প্রশ্নের উত্তর দেয় এবং প্রায়শই প্রশ্নের সমালোচনা করে বা সমাধানের জন্য "অনুমান" দেয় যা সাধারণ সমস্যার উত্তর দেয় না। প্রথম সাধারণ সমস্যা হ'ল আইডিই আপনাকে প্রকল্পের নাম পরিবর্তন না করে বিদ্যমান সমাধানে নতুন ফাইল (.জাভা, .পিপি, .সিপি, .সি) যুক্ত করার পরিবর্তে নতুন প্রকল্প তৈরি করতে পরিচালিত করে (ডিফল্টরূপে এটি একটি নতুন সমাধান তৈরি করে) এবং বর্তমান সমাধান যোগ করুন। পাইথন, জাভা, সি #, সি ++ এবং সি প্রকল্প ফোল্ডারগুলির ক্ষেত্রে এই সমস্যা দেখা দেয়।
আপনি যখন আইডিইর নতুন> প্রকল্প> প্রকল্পের টাইপ কমান্ড ব্যবহার করে অন্য প্রকল্প যুক্ত করেন তখন এটি ঘটে না। এখানে সমস্যাটি হ'ল নতুন প্রকল্পটি বিদ্যমান ক্লায়েন্ট বা ব্যবহারকারীর ইন্টারফেস কোড ফাইলের চেয়ে আলাদা ডিরেক্টরিতে সঞ্চিত। নতুন প্রকল্পের পরিবর্তে একই প্রকল্পের জায়গাতে একটি নতুন "ফাইল" তৈরি করার জন্য শিক্ষানবিশকে নিম্নলিখিতটি করা দরকার যা মাইক্রোসফ্ট আপনার জন্য করে না এবং এমনকি আপনাকে ডিফল্টরূপে স্বজ্ঞাত স্বচ্ছ থেকে দূরে সরিয়ে দেয়।
এখন লাইব্রেরিগুলি আমদানি করতে বা নেমস্পেসগুলি ব্যবহার করার কোড প্রস্তাবনাগুলি উপরের মন্তব্যে বর্ণিত হিসাবে কাজ করবে এবং আপনাকে পাথের বিবৃতি পরিবর্তন করতে হবে না বা সমাধানের পথগুলি এবং সমাধানের নামগুলি পরিবর্তন করতে হবে না যা মাইক্রোসফ্ট আপনাকে সহজে পরিবর্তন করতে দেয় না (যেমন আপনি পরিবর্তন করতে পারেন ফাইলের নাম বা প্রকল্পের নাম তবে আইডিই স্বয়ংক্রিয়ভাবে প্রকল্পের পথ বা সমাধানের পাথের নাম পরিবর্তন করবে না)।
নীচে একটি পাইথনের উদাহরণ রয়েছে তবে একই ডাইরেক্টরি স্পেসের অন্যান্য শ্রেণি / প্রকল্পের কোড সন্ধানের জন্য অন্তর্ভুক্ত, নেমস্পেস বা প্রতিটি ভাষার উপযুক্ত কোড কমান্ড ব্যবহার করে সি #, জাভা, বা সি / সি ++ এর অনুরূপ কাজ করে।
অ্যাপ্লিকেশন ফাইল "হ্যালো ওয়ার্ল্ড" একই ডিরেক্টরিতে অন্য কোড ফাইল থেকে আমদানি করে।
নোট করুন পাইথন সাদা স্পেস ডিলিটাররা এই স্ট্যাকওভারফ্লো কমেন্ট এডিটরটিতে সঠিকভাবে স্পেসে যাচ্ছে না:
print ("test")
from CIXMPythonFacade import ClassA
c1=ClassA
c1.methodA()
from CIXMPythonFacade import functionA
functionA()
class ClassName(object):
def __init__(object, parameter):
object.parameter = value
আপনি আমদানি করতে চান ক্লাস, পদ্ধতি বা ফাংশনযুক্ত লাইব্রেরি ফাইল বা "ফ্যাডে" ফাইল।
class class1(object):
"""description of class"""
class ClassA(object):
print ("test2")
def methodA():
print ("test3")
def functionA ():
print ("test4")
return (0)
pass
এখন আইডিই আপনাকে যে জগাখিচিতে ফেলেছে তা আপনি কীভাবে সমাধান করবেন? একই ডিরেক্টরি স্পেসে অন্য ফাইল থেকে কোড আমদানি করতে আপনি এটিতে একটি রেফারেন্স যুক্ত করেন।
ঠিক আছে তাই এখন আপনার সমস্যাটি সমাধান হয়েছে, আপনি কীভাবে একই সমাধান স্থানটিতে দুটি পৃথক প্রকল্পকে একত্রে সংযুক্ত করবেন?
মাইক্রোসফ্টকে সত্যই এই সমস্যাগুলির সমাধান করতে হবে যাতে আপনি একই ডিরেক্টরিগুলিতে বেশিরভাগ লোকেরা নতুন ফাইল হিসাবে কী তৈরি করতে চান তা অন্তর্নিহিতভাবে তৈরি করতে পারেন এবং সেগুলি নির্বাচন করে এবং আইডিই থেকে মুছে ফেলে সমাধানগুলি সরিয়ে ফেলতে পারেন। শিক্ষাগত বিকাশকারীদের পক্ষে ডিরেক্টরি পথের বিবৃতিগুলি এতটাই নমনীয়, তবে তাদের ডিফল্টগুলিতে নতুন বিকাশকারীদের পক্ষে এতটা অন্যায়ভাবে শিক্ষানবিশরা হতাশ হন।
আশা করি এটি আপনাকে নতুন ছেলেগুলিতে সত্যই সহায়তা করবে এবং পাকা বিকাশকারীদের আপনাকে ভুল উত্তর দেওয়ার থেকে বিরত রাখবে যা আপনার পক্ষে কার্যকর নয়। তারা ধরে নিয়েছে যে আপনি ইতিমধ্যে পাথের বিবৃতি বুঝতে পেরেছেন এবং কেবলমাত্র সঠিক কোডটি টাইপ করতে চান ... এ কারণেই আপনার কোডটি সংশোধন করার চেষ্টা করার কারণে টানেলটি প্রবেশ করলেও সমস্যাটি সমাধান করতে আপনাকে সহায়তা করে না। স্ট্যাকওভারফ্লোতে ক্রমাগত বর্ণিত ভুল উত্তর সহ নতুন প্রোগ্রামারগুলির পক্ষে কাজ করে না এমন এটি সম্ভবত সবচেয়ে সাধারণ সমস্যা।
প্রথম পদক্ষেপটি নিম্নলিখিতগুলি করে পি 2 রেফারেন্স পি 1 করা
এরপরে আপনাকে নিশ্চিত করতে হবে যে পি 1 এর ক্লাসগুলি পি 2 এ অ্যাক্সেসযোগ্য। এগুলি তৈরির সবচেয়ে সহজ উপায় public
।
public class MyType { ... }
এখন আপনার তাদের পুরোপুরি যোগ্য নামের মাধ্যমে পি 2 এ ব্যবহার করতে সক্ষম হওয়া উচিত। P1 এর নেমস্পেসটি প্রজেক্ট 1 হিসাবে ধরে নিলে নিম্নলিখিতটি কাজ করবে
Project1.MyType obj = new Project1.MyType();
যদিও পছন্দসই উপায়টি হল এটির জন্য একটি যুক্ত যুক্তি Project1
যাতে আপনি যোগ্যতা ছাড়াই প্রকারগুলি ব্যবহার করতে পারেন
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
যদি আপনার একটি সমাধান ফোল্ডারে দুটি প্রকল্প থাকে ust কেবলমাত্র প্রকল্পের রেফারেন্সটিকে অন্য.নামস্পেসে যুক্ত করে আপনি ক্লাসগুলি পেতে পারেন। এর জন্য পুনঃনির্মাণ শ্রেণীর জন্য অবজেক্ট তৈরি করার সময়। আপনি যে পদ্ধতিটি চান তা কল করুন।
FirstProject:
class FirstClass()
{
public string Name()
{
return "James";
}
}
এখানে দ্বিতীয় প্রকল্পের রেফারেন্স যুক্ত করুন
SecondProject:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
প্রকল্পে পি 1 ক্লাসটিকে সর্বজনীন করুন (যদি এটি ইতিমধ্যে না থাকে)। তারপরে একটি প্রকল্পের রেফারেন্স (কোনও ফাইলের রেফারেন্সের পরিবর্তে, ভুলটি আমি মাঝে মাঝে এসেছি) যোগ করুন P2 এ। সঠিক জায়গায় P2 এ একটি ব্যবহারের বিবৃতি যুক্ত করুন এবং P1 থেকে ক্লাসটি ব্যবহার শুরু করুন।
(এটি উল্লেখ করার জন্য: শ্রেণিকে জনসাধারণের বিকল্প হিসাবে প্রকাশ করা হবে পি 2 কে পি 1 এর বন্ধু বানানো। তবে এটির কিছু পরিণতি হবে বলে আপনার উত্তরটি পরে আসবে বলে সম্ভাবনা কম। সুতরাং উপরের পরামর্শটি ধরে রাখুন))
প্রকল্প 2-এ আপনার ক্লাসকে মাইক্লাস বলে।
স্পষ্টতই, প্রথমে আপনার প্রকল্পের রেফারেন্সের পরে প্রথমে 1 প্রকল্পে উল্লেখ করুন
using namespaceOfProject2;
// for the class calling bit:
namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();
সুতরাং যখনই আপনি সেই শ্রেণীর রেফারেন্স করতে চান আপনি প্রজেক্ট 2 ক্লাস টাইপ করুন। আরও নিশ্চিত করুন যে ক্লাসটিও সর্বজনীন।
আমি বিভিন্ন লক্ষ্য ফ্রেমওয়ার্ক সঙ্গে একটি সমস্যা ছিল।
আমি সবকিছু ঠিকঠাক করছি, তবে কেবল P2-তে রেফারেন্সটি ব্যবহার করতে পারিনি। আমি পি 1 এবং পি 2 এর জন্য একই লক্ষ্য ফ্রেমওয়ার্কটি সেট করার পরে এটি একটি কবজির মতো কাজ করেছে।
আশা করি এটি কারও সাহায্য করবে
The name ... does not exist in the current context. Cannot resolve symbol ...
আমি প্রকল্পগুলির লক্ষ্য ফ্রেমগুলি মেলে না যাওয়া পর্যন্ত। (প্রকল্পটিতে ডান ক্লিক করুন এবং এটি Project -> Properties -> Target framework
পরিবর্তন করতে যান ))